import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: LIUYANJIAO
 * Date: 2024-11-28
 * Time: 13:22
 */
public class slousion7 {
    //快排序
    static int n=1;
    public static void sort(String[] arr, int left, int right) {
        if (left >= right || left >= arr.length || right < 0) return;
        String pos = arr[left]; // 挖坑，保存基准值
        int i = left, j = right;
        while (i < j) {
            // 从右侧开始，找到小于基准值的数
            while (i < j && arr[j].compareTo(pos)>=0) {
                j--;
            }
            if (i < j) {
                arr[i] = arr[j]; // 将小于基准值的数填到左边坑中
                i++;
            }
            // 从左侧开始，找到大于基准值的数
            while (i < j && arr[i].compareTo(pos)<=0) {
                i++;
            }
            if (i < j) {
                arr[j] = arr[i]; // 将大于基准值的数填到右边坑中
                j--;
            }
        }
        arr[i] = pos; // 将基准值填回坑中
        System.out.println("第"+n+++"次："+Arrays.toString(arr));
        sort(arr, left, i - 1); // 递归排序左半部分
        sort(arr, i + 1, right); // 递归排序右半部分
    }

    public static void main(String[] args) {
        String[] arr=new String[]{"数据结构与算法","计算机导论","离散数学","数字逻辑与计算机组成","程序设计与问题求解","概率论"};
        sort(arr,0,arr.length-1);

    }
}
